package de.fhffm.gaertnerei.gui;
/**
 * @author Michael Wyrzykowski & Julian Schmücker
 */

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import de.fhffm.gaertnerei.tabellenModelle.AussaatTableModel;

public class FortschrittTabellenFenster implements ActionListener {

	private JButton buttonOK = new JButton("OK");
	private JButton buttonAbbrechen = new JButton("Abbrechen");
	
	private JFrame fortschrittFrame = new JFrame();
	
	private JTable table = new JTable();
	
	private JScrollPane scrollPane = new JScrollPane(table);
	
	private JPanel tabellenPanel = new JPanel();
	private JPanel panelUeberschrift = new JPanel();
	private JPanel panelButtons = new JPanel();
	
	private List<String> ausgewaehlteZeile = new ArrayList<String>();
	private int modus = 0;
	
	public FortschrittTabellenFenster(int modus){
		
		this.modus = modus;
		erstelleFenster();
		setzeTabelle();
		setzeButtons();	
		setzePanels();
	}
	
	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();
		
		if(obj == buttonAbbrechen){
			fortschrittFrame.dispose();
		}
		
		if(obj == buttonOK){
			if(doHohleAusgewaehlteZeile()){
				
				/*
				 * Modus 1 => Wachstum
				 * Modus 2 => Bewaesserung
				 * Modus 3 => Ernten
				 */
				switch(modus){
				
				case 1:
					new WachstumFenster(ausgewaehlteZeile);
					fortschrittFrame.dispose();
					break;
				case 2:
					new BewaesserungFenster(ausgewaehlteZeile);
					fortschrittFrame.dispose();
					break;
				case 3:
					new ErnteFenster(ausgewaehlteZeile);
					fortschrittFrame.dispose();
					break;
				}

			} else {
				System.out.println("Fehler beim hohlen der Zeile");
			}
		}
	}
	
	private void erstelleFenster() {
		
		fortschrittFrame.setTitle("Aussaat auswählen");
		fortschrittFrame.setSize(800,535);
		fortschrittFrame.setLocationRelativeTo(null);
		fortschrittFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		fortschrittFrame.setResizable(false);
		fortschrittFrame.setLayout(new FlowLayout());	
		fortschrittFrame.setVisible(true);
	}


	private void setzeTabelle() {

		table.setModel(new AussaatTableModel());
		
		scrollPane.setPreferredSize(new Dimension(790,400));
		tabellenPanel.add(scrollPane);
		fortschrittFrame.add(tabellenPanel);	
	}

	private void setzeButtons() {
		
		panelButtons.add(buttonOK);
		panelButtons.add(buttonAbbrechen);
		buttonOK.addActionListener(this);
		buttonAbbrechen.addActionListener(this);
	}

	private void setzePanels(){
		
		fortschrittFrame.getContentPane().add(panelUeberschrift, BorderLayout.NORTH);
		fortschrittFrame.getContentPane().add(tabellenPanel, BorderLayout.CENTER);
		fortschrittFrame.getContentPane().add(panelButtons, BorderLayout.SOUTH);

	}
	
	private boolean doHohleAusgewaehlteZeile() {
		int ausgwZeile = table.getSelectedRow();
		
		try{
			
			ausgewaehlteZeile.add(((Integer) table.getModel().getValueAt(ausgwZeile, 0)).toString()); // AussaatID
			ausgewaehlteZeile.add((String) table.getModel().getValueAt(ausgwZeile, 1));				  // Datum
			ausgewaehlteZeile.add((String) table.getModel().getValueAt(ausgwZeile, 4));				 // Sorte		

		}catch(IllegalArgumentException ia){
			
			System.out.println("Bitte eine Zeile auswählen");
			JOptionPane.showMessageDialog(null,"Bitte eine Zeile auswählen","Fehler",JOptionPane.ERROR_MESSAGE);
			return false;
			
		}
		return true;
	}
}